import org.junit.jupiter.api.Test;

public class _05_最长回文子串 {

    @Test
    void test(){
        System.out.println(longestPalindrome("ac"));
    }


    public String longestPalindrome(String s) {
        if(s.length()<2){
            return s;
        }
        //用长度和起始位置代表子串，减小内存开销
        int maxLen=0;
        int index=0;
        for (int i = 0; i < s.length(); i++) {
            for (int j = i+1; j <s.length() ; j++) {
                //要是子串的长度大于manLen的长度才去判断他是不是回文子串
                if ((j-i+1)> maxLen&&pudgeSub(s,i,j)){
                    maxLen=j-i+1;
                    index=i;
                }

//                String temp=s.substring(i,j);
//                StringBuilder stringBuilder=new StringBuilder(temp);
//                if (stringBuilder.reverse().toString().equals(temp)&temp.length()>max.length()){
//                    max=temp;
//                }
            }

        }
        if (index==0&&index+maxLen==0){
            return  s.substring(index,index+maxLen+1);
        }
        return s.substring(index,index+maxLen);

    }

    /**
     * 判断字符串是否为回文串
     * @param s
     * @param left
     * @param right
     * @return
     */
    public boolean pudgeSub(String s,int left,int right){
        while (left<right){
            if (s.charAt(left)!=s.charAt(right)){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
}
